//
//  ViewController.swift
//  SwiftTest
//
//  Created by DeLong Yang on 2017/7/31.
//  Copyright © 2017年 YiXue. All rights reserved.

/*
    笔者想实现一下 UIScrollView 到 uitablview 的重复利用的DEMO apple 没有开源
    笔者认为 返回每行 返回的cell 的高度 决定了是否需要新建cell 还是 从 reusecell。 因为如果超出
    visibleCells 和 reusedCells  因为如果这样就意味着可以一直创建cell 如果每次都加contentSize的话
 
    我们假定 cell 都是相同的高度 这样计算简单点淡然 当然 如果不同的话 visibleCells 可以计算出高度
    问题一 向下 滑动的时候 消失的cell 不断的往上移动。向上滑动时候 上面消失的cell 不断的往下面移动
    问题二 不论上 还是 向下 cell的 并没有移动 只是内容在变 只是
    较好的实现可以看：
    https://github.com/ole/OLEContainerScrollView
    https://github.com/daria-kopaliani/DARecycledScrollView 
 

 */

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        let matchString = regexGetSub(pattern: "", str: "http://www.runoob.com:80/html/html-tutorial.html")
        print(matchString)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func regexGetSub(pattern:String, str:String) -> [String] {
        var subStr = [String]()
        let regex = try? NSRegularExpression(pattern: pattern, options:[NSRegularExpression.Options.caseInsensitive])
        let results = regex?.matches(in: str, options: NSRegularExpression.MatchingOptions.init(rawValue: 0), range: NSMakeRange(0, str.characters.count))
        //解析出子串
        for  rst in results! {
            let nsStr = str as  NSString  //可以方便通过range获取子串
            subStr.append(nsStr.substring(with: rst.range))
            //str.substring(with: Range<String.Index>) //本应该用这个的，可以无法直接获得参数，必须自己手动获取starIndex 和 endIndex作为区间
        }
        return subStr
    }

}
